﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BackEndSystemWebTv.Enums;

namespace BackEndSystemWebTv
{
    public partial class SociaalMedium
    {       
        /// <summary>
        /// Deze LINQ query zorgt ervoor dat alle unieke sociaal media's worden opgehaald 
        /// </summary>
        /// <returns>Een lijst met alle unieke Sociale Media's</returns>
        public List<string> HaalAlleSocialMediaOp()
        {
            var sm =
                (from m in DatabaseEntities.Instance.SociaalMediums
                select m.Sociaalmedium).Distinct();

            List<string> smLijst = new List<string>();
            foreach (string item in sm)
            {
                smLijst.Add(item);
            }
            return smLijst;
        }
         
        /// <summary>
        /// maakt sociaal medium op voor autorisatie
        /// </summary>
        /// <param name="medium"></param>
        /// <param name="aut"></param>
        /// <returns></returns>
        internal SociaalMedium MaakSociaalMedium(ESocialMedium medium, Autorisatie aut)
        {
            SociaalMedium sm = new SociaalMedium();
            sm.Sociaalmedium = medium.ToString();
            sm.Autorisatie = aut;
            DatabaseEntities.Instance.AddToSociaalMediums(sm);           
            return sm;
        }

        /// <summary>
        /// Haal de SM gegevens op van de ingelogde gebruiker.
        /// Deze gegevens worden gebruikt om ze te kunnen wijzigen.
        /// </summary>
        /// <param name="gebruiker">Ingelogde gebruiker</param>
        /// <param name="sm">ESociaalMedium</param>
        /// <returns>Dictionary<<string></string>></returns>
        public Dictionary<string, string> HaalSociaalMediaInfoOp(string gebruiker, ESocialMedium sm)
        {
            string soc = sm.ToString();
            var info =
                from m in DatabaseEntities.Instance.SociaalMediums
                where m.Sociaalmedium == soc 
                      && m.Autorisatie.Gebruiker.Gebruikersnaam == gebruiker
                select m;

            Dictionary<string, string> gegevens = new Dictionary<string, string>();

            foreach (SociaalMedium item in info)
            {
                gegevens.Add("gebruikersnaam", item.GebruikersnaamSM);
                gegevens.Add("wachtwoord", item.WachtwoordSM);
            }    
            
            return gegevens;
        }

        /// <summary>
        /// Wijzig de social media gegevens van de gebruiker.
        /// </summary>
        /// <param name="user">De aangemelde gebruiker in het systeem</param>
        /// <param name="gebruikersnaamNieuw">De nieuwe gebruikersnaam voor het Sociale medium</param>
        /// <param name="wachtwoordNieuw">Het nieuwe wachtwoord voor het sociale medium</param>
        /// <param name="eSocialMedium">Het sociale medium waarvan de gegevens gewijzigd moeten worden.</param>
        /// <returns></returns>
        public EWijzigSociaalMedium WijzigSociaalMediumGegevens(string user, string gebruikersnaamNieuw, string wachtwoordNieuw, ESocialMedium eSocialMedium)
        {          
            string soc = eSocialMedium.ToString();

            var info =
                from m in DatabaseEntities.Instance.SociaalMediums
                where m.Sociaalmedium == soc
                      && m.Autorisatie.Gebruiker.Gebruikersnaam == user
                select m;

            foreach (SociaalMedium item in info)
            {
                item.GebruikersnaamSM = gebruikersnaamNieuw;
                item.WachtwoordSM = wachtwoordNieuw;               
            }
           // DatabaseEntities.Instance.AcceptAllChanges();
            DatabaseEntities.Instance.SaveChanges();
            return EWijzigSociaalMedium.Succes;
            
            
        }
    }
}